/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jogodavelha;

/**
 *
 * @author Usuario
 */
public class velha {
    private char[][] tabuleiro;
    private boolean[][] ocupado;
    private int vez;
    private char vencedor;
    private boolean sucesso;
    boolean empate;
    
    public velha(){
        this.ocupado = new boolean[][] {{false,false,false},
                                        {false,false,false},
                                        {false,false,false}};
        this.tabuleiro = new char[][] {{'_','_','_'},
                                       {'_','_','_'},
                                       {'_','_','_'}};
        this.vez = 0;
        this.sucesso = false;
        this.empate = false;
    }
    
    public int getVez(){
        return this.vez;
    }
    
    public void incrementaVez(){
        this.vez ++;
        this.sucesso = false;
    }
    
    public char getVencedor(){
        return this.vencedor;
    }
    
    public boolean getSucesso(){
        return this.sucesso;
    }
    
    public boolean getEmpate(){
        return this.empate;
    }
    
    public void insereO(int i, int j){
        
        if(i>2 || j>2) System.out.println("O campo não existe, escolha outro");
        
        else if (this.ocupado[i][j] == false) {
            this.tabuleiro[i][j] = 'O';
            this.ocupado[i][j] = true;
            this.sucesso = true;
        }
        else System.out.println("O campo esta ocupado, escolha outro.");
    }
    
    public void insereX(int i, int j){
        
        if(i>2 || j>2) System.out.println("O campo não existe, escolha outro");
        
        else if (this.ocupado[i][j] == false) {
            this.tabuleiro[i][j] = 'X';
            this.ocupado[i][j] = true;
            this.sucesso = true;
        }
        else System.out.println("O campo esta ocupado, escolha outro.");
    }
    
    public void imprimirTabuleiro(){
        int i,j;
        for (i=0;i<3;i++){
            for(j=0;j<3;j++){
                System.out.print(this.tabuleiro[i][j] + " ");    
            }
            System.out.print("\n");
        }
    }
    
    public int testaVencedor(){
        
        if(tabuleiro[0][0] == tabuleiro[0][1] &&
           tabuleiro[0][1] == tabuleiro[0][2] &&
           (tabuleiro[0][0] == 'X' || tabuleiro[0][0] == 'O'))
           this.vencedor=tabuleiro[0][0];
        //primeira linha
        
        if(tabuleiro[1][0] == tabuleiro[1][1] &&
           tabuleiro[1][1] == tabuleiro[1][2] &&
           (tabuleiro[1][0] == 'X' || tabuleiro[1][0] == 'O'))
           this.vencedor=tabuleiro[1][0];
        //segunda linha
        
        if(tabuleiro[2][0] == tabuleiro[2][1] &&
           tabuleiro[2][1] == tabuleiro[2][2] &&
           (tabuleiro[2][0] == 'X' || tabuleiro[2][0] == 'O'))
           this.vencedor=tabuleiro[2][0];
        //terceira linha
        
        if(tabuleiro[0][0] == tabuleiro[1][0] &&
           tabuleiro[1][0] == tabuleiro[2][0] &&
           (tabuleiro[0][0] == 'X' || tabuleiro[0][0] == 'O'))
           this.vencedor=tabuleiro[0][0];
        //primeira coluna
        
        if(tabuleiro[0][1] == tabuleiro[1][1] &&
           tabuleiro[1][1] == tabuleiro[2][1] &&
           (tabuleiro[0][1] == 'X' || tabuleiro[0][1] == 'O'))
           this.vencedor=tabuleiro[0][1];
        //segunda coluna
        
        if(tabuleiro[0][2] == tabuleiro[1][2] &&
           tabuleiro[1][2] == tabuleiro[2][2] &&
           (tabuleiro[0][2] == 'X' || tabuleiro[0][2] == 'O'))
           this.vencedor=tabuleiro[0][2];
        //terceira coluna
        
        if(tabuleiro[0][0] == tabuleiro[1][1] &&
           tabuleiro[1][1] == tabuleiro[2][2] &&
           (tabuleiro[0][0] == 'X' || tabuleiro[0][0] == 'O'))
           this.vencedor=tabuleiro[0][0];
        //diagonal principal
        
        if(tabuleiro[0][2] == tabuleiro[1][1] &&
           tabuleiro[1][1] == tabuleiro[2][0] &&
           (tabuleiro[0][2] == 'X' || tabuleiro[0][2] == 'O'))
           this.vencedor=tabuleiro[0][2];
        //diagonal secundaria
        
        int i, j;
        this.empate = true;
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                if (tabuleiro[i][j] == '_') this.empate = false;
            }
        }
        
        if(this.vencedor=='X' || this.vencedor=='O')
            System.out.println("\n Ovencedor é o jogador " + this.vencedor);
        
        if(this.empate == true && this.vencedor != 'X' && this.vencedor != 'O')
            System.out.println("Deu Velha!");
        
        return this.vencedor;
    }
    
    }
